import axios from "axios";
import config from "../config"; //引入配置文件

//对当前环境变量进行判断 开发环境就取开发环境的接口地址 否则就以为是生产环境
const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro

//用es6语法写axis的工具类
class HttpRequest{
    constructor(baseUrl){
        this.baseUrl = baseUrl //初始化
    }
    //添加方法 定义axis相关配置
    getInsideConfig(){
        const config ={
            baseUrl:this.baseUrl,
            header:{}
        }
        return config
    }
    //拦截器相关函数
    interceptors (instance){
        // 添加请求拦截器
        instance.interceptors.request.use(function (config) {
            // 在发送请求之前做些什么
            return config;
          }, function (error) {
            // 对请求错误做些什么
            return Promise.reject(error);
          });
        
        // 添加响应拦截器
        instance.interceptors.response.use(function (response) {
            console.log(response, 'response')
            // 对响应数据做点什么
            return response;
          }, function (error) {
            console.log(error, 'error')
            // 对响应错误做点什么
            return Promise.reject(error);
          });
    }
    //后续进行接口请求时就会调用这里的request
    request(options){
        const instance = axios.create()
        options = { ...this. getInsideConfig(), ...options} //解构
        //调用拦截器
        this. interceptors(instance)
        return instance(options)
    }
}

export default new HttpRequest(baseUrl)